# coding: utf-8
'''

类变量和实例变量
'''
# 1
class Person:
	name = 'aaa'

p1 = Person()
p2 = Person()
p1.name = 'bbb'

print p1.name # bbb
print p2.name # aaa
print Person.name # aaa

class Person:
	name = []

# 2
p1 = Person()
p2 = Person()
p1.name.append(1)
p1.name = 2
print p1.name # 2
print p2.name # [1]
print Person.name # [1]

'''

类变量就是供类使用的变量, 实例变量就是供实例使用的变量
和函数传参的例子一样, p1.name最早指向的是类变量所指向的对象
但是实例的作用域把类变量的引用改变了, 就变成了p1的实例变量 self.name
不在引用Person变量所指向的对象了

例子2中: 实例p1,p2和类Person中的name原先是执行同一个可变对象的内存地址
		p1.name.append(1) 对可变对象就行了修改, 这时p1,p2,Person的 name = [1]
		p1.name = 2 中 p1实例的name属性重新指向了另一个内存地址 p1.name = 2

'''